package Test06;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

//IO流练习
/*
需求：拷贝一个文件夹，考虑子文件夹
 */
public class Test15 {
    public static void main(String[] args) throws IOException {

        //1、创建对象表示数据源
        File src = new File("D:\\工作\\src");
        //2、创建对象表示目的地
        File dest = new File("D:\\工作\\dest");
        //3、调用方法拷贝文件
        copydir(src, dest);
    }

    //定义方法拷贝文件
    public static void copydir(File src, File dest) throws IOException {
        System.out.println(dest.mkdirs());
        //递归
        //1、进入数据源
        File[] files = src.listFiles();
        if (files != null) {
            //2、遍历数组
            for (File file : files) {
                if (file.isFile()) {
                    //3、判断文件，拷贝
                    FileInputStream fis = new FileInputStream(file);
                    FileOutputStream fos = new FileOutputStream(new File(dest, file.getName()));
                    int len;
                    byte[] bytes = new byte[1024];
                    while ((len = fis.read(bytes)) != -1) {
                        fos.write(bytes, 0, len);
                    }
                    fos.close();
                    fis.close();
                } else {
                    //4、判断文件夹，递归
                    copydir(file, new File(dest, file.getName()));
                }
            }
        }
    }
}
